# 导入查询元素方式
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Edge()

driver.get(r'https://yoyodadada.lanzoui.com/u/yoyodadada')  # 加载网址

"""
查询元素
find_element(定位策略,"查询的规则") 返回结果为单个WebElement对象
find_elements(定位策略,"查询的规则") 返回结果为数组
查询不到会抛异常

"""
el = driver.find_element(By.CSS_SELECTOR, "#infos>div")

# 获取该元素下的所有显示文本
print(el.text)

# 这个方法首先会尝试返回元素指定的属性
# 如果属性不存在，它会返回和属性名相同的字符串
# 如果没有属性是这个名字，返回None
# 被认为是真假的值会返回布尔类型，其他所有的非None值都会以字符串的形式返回。属性不存在，返回None
print(el.get_attribute("href"))

# 点击该元素
el.click()

# 切换焦点对象，如当前页文档对象，切换到frame标签的对象
# 可选id，索引，WebElement对象(find_element返回的对象)
driver.switch_to.frame("str, int, WebElement")

# 页面加载了的源码
print(driver.page_source)

# 网站标题
print(driver.title)

# 添加cookie
driver.add_cookie("")

# 删除指定cookie
driver.delete_cookie("")

# 删除全部cookie
driver.delete_all_cookies()

# 返回一个指定的cookie，不存在返回None
driver.get_cookie("")

# 返回一组dict,相当于当前会话的可用cookie
print(driver.get_cookies())

# 返回指定类型日志
print(driver.get_log(""))

# 获取当前页面的截图的base64编码字符串，当页面嵌入了图片时这个方法很有用。
driver.get_screenshot_as_base64()


# 最小化窗口
driver.minimize_window()

# 最大化窗口
driver.maximize_window()

# 当前页的url
print(driver.current_url)

# 同步执行js脚本，如有数据返回则返回反之None
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

# 异步执行js脚本，如有数据返回则返回反之None
driver.execute_async_script("window.scrollTo(0,document.body.scrollHeight)")

# 隐藏window.navigator.webdriver，防止网站检测到，放在加载网址之前,详情可看https://zhuanlan.zhihu.com/p/117506307
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": "Object.defineProperty(navigator, 'webdriver', { get: () => undefined })"})

# 隐藏window.navigator.webdriver，防止网站检测到，需放在网站加载之后执行
driver.execute_script('Object.defineProperty(navigator, "webdriver", {get: () => undefined})')

# 关闭 driver实例操作的页面
driver.close()

# 直接退出并关闭所有关联的tab窗口
driver.quit()
